老师,这样写能避免溢出问题? pf_get_tick_count归零不就不准

🔍 溯源 ✍️ Jack | 📅 2025-02-24 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/项目实战 #质量/普通

原帖 | Jack | 2025-02-24 17:32 | 👍0 | 阅读约1

老师,这样写能避免溢出问题? pf_get_tick_count归零不就不准了吗?(图一)

以u16为例,starttick为65500,timeout为100,pf_get_tick_count从65535加1变为了0,再继续加到101才能大于timeout。这种情况等于多加了(65535-65500)个tick,不是吗?等于说是才过了65535-65500个tick就超时了。

答:
这里会有取模运算,所以结果也是对的。如果你怕编译器有差异,你可以自己做个取模运算(如图二)。
但是要求很严的项目肯定不是这么做的,简单的会维护一个64位计数,数值非常大。
还有一些开源库可以用:GorgonMeducer.perf_counter

b2c16a6cdef5.jpg

bbb446a4275e.jpg


相关笔记